using UnityEngine;
using UnityEngine.UI;

public class LineDrawer : MonoBehaviour
{
    private RectTransform rectTransform; // 用于控制线段Image的RectTransform组件
    private Image lineImage; // 线段对应的Image组件

    private void Awake()
    {
        rectTransform = GetComponent<RectTransform>();
        lineImage = GetComponent<Image>();
    }

    // 方法用于初始化线段，设置起点和终点坐标（这里是相对坐标，需要后续转换到屏幕坐标等）
    public void Initialize(Vector2 start, Vector2 end)
    {
        // 计算线段长度和方向，用于设置线段Image的属性（比如长度等）
        Vector2 direction = end - start;
        float distance = direction.magnitude;

        rectTransform.anchoredPosition = start;
        rectTransform.sizeDelta = new Vector2(distance, lineImage.rectTransform.sizeDelta.y);
        lineImage.rectTransform.localEulerAngles = new Vector3(
            0,
            0,
            Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg
        );
    }

    // 方法用于更新线段位置，当节点位置改变时调用
    public void UpdatePosition(Vector2 start, Vector2 end)
    {
        // 同样重新计算方向和长度等，更新线段Image的属性
        Vector2 direction = end - start;
        float distance = direction.magnitude;

        rectTransform.anchoredPosition = start;
        rectTransform.sizeDelta = new Vector2(distance, lineImage.rectTransform.sizeDelta.y);
        lineImage.rectTransform.localEulerAngles = new Vector3(
            0,
            0,
            Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg
        );
    }
}
